<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Feriado extends CI_Controller {
        
    function __construct(){
        parent::__construct();
        if (!$this->session->userdata('logged_in')){
            redirect('login');exit;
        }
        else{
            $componente = array('componente'=>'feriado');
            $this->session->set_userdata($componente);
            $this->load->helper(array('form', 'url', 'date'));
            $this->load->model('Feriado_Model');
        }        
    }

    function index(){
        if(!$this->session->userdata('componente')){
            echo "Componente indefinido!";
        }else{
            if($this->session->userdata('perfil') != 'cliente'){
                $componente = $this->session->userdata('componente').'_view'; 
                $this->load->view('layout/header_view',$componente);
                $this->load->view('menu_view');
                $this->gerencia();
                //$msg['msg'] = '';
                //$this->load->view('feriado_view', $msg);
                $this->load->view('layout/footer_view'); 
            }else{
                exit("Você não tem Permissão para acessar esta área.");
            }
        }        
    }

    function gerencia(){
        $feriados = array('feriados'=>$this->Feriado_Model->gerenciaFeriados());
        $this->load->view('feriado_view', $feriados);
    }
    
    function form(){
        $msg = '';
        if($this->input->post('add')){
            $dtferiado = $this->input->post('dtferiado');
            $feriado = array(
                'dtferiado'=>$dtferiado,
                'descricao_feriado'=>$this->input->post('descricao')
            );
            $config = array(
                array(
                'field' => 'dtferiado', 
                'label' => 'Data do Feriado', 
                'rules' => 'trim|required|xss_clean'), 
                array(
                'field' => 'descricao',
                'label' => 'Descrição do Feriado',
                'rules' => 'trim|required|xss_clean')
            );        
            $this->form_validation->set_rules($config);
            if($this->form_validation->run($this) != FALSE){
                if(!empty($this->uri->segment(3))){
                    $id = $this->uri->segment(3);
                    $this->Feriado_Model->edita($id, $feriado);
                    $msg = "Feriado editado com sucesso.";
                }else{
                    $this->Feriado_Model->insere($feriado);
                    # Rotina para Inserir Feriados nacionais automaticamente. (Após a inserção do primeiro feriado pelo usuário.)
                    $data = explode("/", $dtferiado);
                    $ano  = $data[2];
                    $nacionais = $this->Feriado_Model->checaNacionaisAnoCorrente($ano);
                    if(empty($nacionais)){
                        $this->feriadosNacionais($ano);
                    }
                    $msg = "Feriado inserido com sucesso.";    
                }                     
            }else{
                echo 'Os campos não podem ser vazios.<br />';
            }            
        }
        if(!empty($this->uri->segment(3))){
            $feriado = $this->Feriado_Model->feriadoPorId($this->uri->segment(3));
            $this->load->view('feriado_form', array('msg'=>$msg, 'idferiado'=>$feriado[0]->idferiado, 'dtferiado'=>$feriado[0]->dtferiado, 'descricao'=>$feriado[0]->descricao_feriado));  
        }else{
            $this->load->view('feriado_form', array('msg'=>$msg));
        }        
    }

    function feriadosNacionais($ano){
        if ($ano === null){
            $ano = intval(date('Y'));
        } 
        $pascoa     = easter_date($ano); // Limite de 1970 ou após 2037 da easter_date PHP consulta http://www.php.net/manual/pt_BR/function.easter-date.php
        $dia_pascoa = date('j', $pascoa);
        $mes_pascoa = date('n', $pascoa);
        $ano_pascoa = date('Y', $pascoa);
 
        $descricoes = array(
            utf8_decode('Confraternizacao Universal'),
            utf8_decode('Tiradentes'),
            utf8_decode('Dia do Trabalhador'),
            utf8_decode('Dia da Independencia'),
            utf8_decode('N. S. Aparecida'),
            utf8_decode('Todos os santos'),
            utf8_decode('Proclamacao da republica'),
            utf8_decode('Natal'),
            utf8_decode('2 feria Carnaval'),
            utf8_decode('3 feria Carnaval'),
            utf8_decode('6 feira Santa'),
            utf8_decode('Pascoa'),
            utf8_decode('Corpus Cirist')
        );
        $feriados = array(
            // Datas Fixas dos feriados Nacionail Basileiras
            mktime(0, 0, 0, 1,  1,   $ano), // Confraternização Universal - Lei nº 662, de 06/04/49
            mktime(0, 0, 0, 4,  21,  $ano), // Tiradentes - Lei nº 662, de 06/04/49
            mktime(0, 0, 0, 5,  1,   $ano), // Dia do Trabalhador - Lei nº 662, de 06/04/49
            mktime(0, 0, 0, 9,  7,   $ano), // Dia da Independência - Lei nº 662, de 06/04/49
            mktime(0, 0, 0, 10,  12, $ano), // N. S. Aparecida - Lei nº 6802, de 30/06/80
            mktime(0, 0, 0, 11,  2,  $ano), // Todos os santos - Lei nº 662, de 06/04/49
            mktime(0, 0, 0, 11, 15,  $ano), // Proclamação da republica - Lei nº 662, de 06/04/49
            mktime(0, 0, 0, 12, 25,  $ano), // Natal - Lei nº 662, de 06/04/49
         
            // These days have a date depending on easter
            mktime(0, 0, 0, $mes_pascoa, $dia_pascoa - 48,  $ano_pascoa), //2ºferia Carnaval
            mktime(0, 0, 0, $mes_pascoa, $dia_pascoa - 47,  $ano_pascoa), //3ºferia Carnaval 
            mktime(0, 0, 0, $mes_pascoa, $dia_pascoa - 2 ,  $ano_pascoa), //6ºfeira Santa  
            mktime(0, 0, 0, $mes_pascoa, $dia_pascoa     ,  $ano_pascoa), //Pascoa
            mktime(0, 0, 0, $mes_pascoa, $dia_pascoa + 60,  $ano_pascoa), //Corpus Cirist
        );
        for($i=0; $i<count($feriados); $i++){
            $this->Feriado_Model->insereNacionais(date("Y-m-d", $feriados[$i]), $descricoes[$i]);
        }
    } 

    function exclui(){
        if($this->session->userdata('perfil') != 'cliente'){
            $this->Feriado_Model->excluiFeriado($this->uri->segment(3));
        }
        header("location:".base_url()."feriado");
    }
}